/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agb.servlets;


import agb.Modelo.Alumno;
import agb.Modelo.Docente;
import agb.Modelo.Horarios;
import agb.Modelo.Promedios;
import agb.Modelo.ProyectosComunicados;
import agb.Modelo.UsuarioWeb;
import agb.Modelo.Utilidades;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Sistemas
 */
public class SrvServletSecretaria extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String accion = request.getParameter("accion");
            if(accion.equalsIgnoreCase("detalleComunicado")){
                detalleComunicado(request, response);
            }else if(accion.equalsIgnoreCase("modificaComunicado")){
                modificaComunicado(request, response);
            }else if(accion.equalsIgnoreCase("regComunicado"))
            {
                RegistroComunicados(request, response);
            }
            else
                if(accion.equalsIgnoreCase("regComunicados"))//llama a la ventana para registrarComunicado
                {
                    registroComunicadoForm(request, response);
                }
            else if(accion.equalsIgnoreCase("comunicadosSecretaria"))
                  {
                    comunicadosSecretaria(request, response);
                    }
            else if(accion.equalsIgnoreCase("regComunicadoInv"))
                    {
                        RegistroComunicadosInv(request,  response);       
                    }
            else if(accion.equalsIgnoreCase("comuActividad")){
                comunicadoActividad(request, response);
            }else if(accion.equalsIgnoreCase("comuAnuncio")){
                comunicadoActividad(request, response);
            } else if(accion.equalsIgnoreCase("comuReunion")){
                comunicadoActividad(request, response);
            }else if(accion.equalsIgnoreCase("comuCalendario")){
                comunicadoActividad(request, response);
            }
            else if(accion.equalsIgnoreCase("eliminarComunicado"))
            {
                eliminarComunicado(request,  response);
            }
            else
                if(accion.equalsIgnoreCase("listarComunicado"))
                {
                    listarComunicado(request,response);
                }
            else
                if(accion.equalsIgnoreCase("detalleComunicadoV"))
                {
                      detalleComunicadoV(request, response);
                }
            else
                if(accion.equalsIgnoreCase("verificarComunicado"))
                {
                    verificarComunicado(request,response);
                }
            else
                if(accion.equalsIgnoreCase("horario"))
                {
                    HorarioGeneral(request,response);
                }
            else
                if(accion.equalsIgnoreCase("aulas"))
                {
                    aulas(request,response);
                }
            else if(accion.equalsIgnoreCase("aulaAlumno"))
            {
               listaAlumnosAula(request, response);
               }
            else if(accion.equalsIgnoreCase("aulas")){
               aulas(request, response);
           }
           else if(accion.equalsIgnoreCase("infoNotas"))
                   {
                       notasPeriodo(request,response);
                   }
            
                
            
            
            
        } finally { 
            out.close();
        }
    }
    protected void listaAlumnosAula(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {           
           // HttpSession session = request.getSession(true);
            
            String cods = request.getParameter("cboAula");
                //int codPersonaDocente = Integer.parseInt(session.getAttribute("codPersona").toString());      
                String datos[] = cods.split(",");
                int codGrado = Integer.parseInt(datos[0]);
                int codSeccion = Integer.parseInt(datos[1]);
                int codNivel = Integer.parseInt(datos[2]);
             // int codProfesor =Integer.parseInt(request.getParameter("cboDocente"));
                ArrayList<Alumno> LAlumno = new ArrayList<Alumno> ();
                LAlumno = Alumno.listaAlumnosSegunAula(codGrado, codSeccion, codNivel);
            
            
            
           // String cods = request.getParameter("cboAula");
            //int codPersonaDocente = Integer.parseInt(session.getAttribute("codPersona").toString());
            //String lista[] = cods.split(",");
            //int codHorario = Integer.parseInt(lista[0]);
            //int codCurso = Integer.parseInt(lista[1]);
            //int anioDocente = Utilidades.AnioDocentePorCodigo(codPersonaDocente);
            //List<Alumno> LAlumnos = new ArrayList<Alumno>();
            //LAlumnos = Alumno.nombreAlumnosSegunAula(codHorario, anioDocente);
                //Docente oDocente = new Docente();
                //oDocente = Docente.GradoSeccionNivelDocenteSegunCodigoHorario(codHorario,codPersonaDocente);
            Date fechaActual = new Date();
             Utilidades oUtil = new Utilidades();
            oUtil = Utilidades.GradoSeccionAlumno(LAlumno.get(0).getCodigo());                   
            int anio = 0;
            if(oUtil.getAnioMatriculas()!=null){
                anio = Integer.parseInt(oUtil.getAnioMatriculas());
            } 
           
            ArrayList<String> LMuestraPeriodos = null; 
                LMuestraPeriodos = new ArrayList<String>();                
            LMuestraPeriodos.add("1- Primer Mes");
            if(anio < (fechaActual.getYear() + 1900)){
                            
            }else{
                
                
                if((((fechaActual.getMonth()+1)>=4) ) ){
                    LMuestraPeriodos.add("2- Segundo Mes");
                }                
                if((((fechaActual.getMonth()+1)>=5))){
                    LMuestraPeriodos.add("3- Tercer Mes");
                }                
                if((((fechaActual.getMonth()+1)>=6) )){
                   LMuestraPeriodos.add("4- Cuarto Mes"); 
                }
                if((((fechaActual.getMonth()+1)>=7) ) ){
                   LMuestraPeriodos.add("5- Quinto Mes");
                }
                if((((fechaActual.getMonth()+1)>=8) ) ){
                   LMuestraPeriodos.add("6- Sexto Mes");
                }
                if((((fechaActual.getMonth()+1)>=9) ) ){
                   LMuestraPeriodos.add("7- Setimo Mes"); 
                }
                if((((fechaActual.getMonth()+1)>=10) ) ){
                   LMuestraPeriodos.add("8- Octavo Mes"); 
                }
            }
            ArrayList<String> totalMes=new ArrayList<String>();
            for (int i = 0; i <LAlumno.size(); i++) 
            {
                  String combo="<select id="+(i+1)+"><option value=0>--Seleccione Mes--</option>";
             int j=1;
                    for(String mes:LMuestraPeriodos)
                    {

                        combo+="<option value="+j+">"+mes+"</option>";
                        j++;
                    }
                     combo+="</select>";
                     totalMes.add(combo);
            }
          
           
            
            StringBuilder sb = new StringBuilder();
            int i=1;
            int k=0;
            for(Alumno actual:LAlumno){
                sb.append("[\"" + (i++) 
                        + "\",\"" + actual.getNombreCompleto()  
                        + "\",\"" +totalMes.get(k) 
                        +  "\",\"<a href='javascript:showDialog("+(k+1) 
                        + "," + actual.getCodigo() + ");' class='approve_icon' title='Approve'></a>\"],");
                k++;
            }
            String str = sb.substring(0,sb.length()-1);
            if(str.equals("")){
                str = "[]";
            }else{
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            out.println(str);
        } finally {
            out.close();
        }
    }








     protected void notasPeriodo(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
         int periodo = Integer.parseInt(request.getParameter("codMes"));
            int codigo  = Integer.parseInt(request.getParameter("codigo"));
            if(periodo!=0){
                ArrayList<Promedios> LNotas = new ArrayList<Promedios>();
                Promedios cabecera = new Promedios();
                ArrayList<Promedios> LPromMes1 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMes2 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMes3 = new ArrayList<Promedios>();
                ArrayList<Promedios> LNotasBimestrales = new ArrayList<Promedios>();
                ArrayList<Promedios> LNotasTrimestrales = new ArrayList<Promedios>();
                String next = "";
                switch(periodo){
                    case 1:
                        LNotas = Promedios.notasMes01(codigo);
                        cabecera.setNota1(1);
                        cabecera.setNota2(2);
                        cabecera.setNota3(3);
                        cabecera.setMensual(1);
                        break;
                    case 2:
                        LNotas = Promedios.notasMes02(codigo);  
                        cabecera.setNota1(4);
                        cabecera.setNota2(5);
                        cabecera.setNota3(6);
                        cabecera.setMensual(2);
                        break;
                    case 3:
                        LNotas = Promedios.notasMes03(codigo);  
                        cabecera.setNota1(7);
                        cabecera.setNota2(8);
                        cabecera.setNota3(9);
                        cabecera.setMensual(3);
                        break;
                    case 4:
                        LNotas = Promedios.notasMes04(codigo); 
                        cabecera.setNota1(10);
                        cabecera.setNota2(11);
                        cabecera.setNota3(12);
                        cabecera.setMensual(4);
                        break;
                    case 5:
                        LNotas = Promedios.notasMes05(codigo);
                        cabecera.setNota1(13);
                        cabecera.setNota2(14);
                        cabecera.setNota3(15);
                        cabecera.setMensual(5);
                        break;
                    case 6:
                         LNotas = Promedios.notasMes06(codigo);
                         cabecera.setNota1(16);
                         cabecera.setNota2(17);
                         cabecera.setNota3(18);
                         cabecera.setMensual(6);
                        break;
                    case 7:
                         LNotas = Promedios.notasMes07(codigo);
                         cabecera.setNota1(19);
                         cabecera.setNota2(20);
                         cabecera.setNota3(21);
                         cabecera.setMensual(7);
                        break;
                    case 8:
                         LNotas = Promedios.notasMes08(codigo);
                         cabecera.setNota1(22);
                         cabecera.setNota2(23);
                         cabecera.setNota3(24);
                         cabecera.setMensual(8);
                        break;
                    case 9:
                         LNotas = Promedios.notasMes09(codigo);
                         cabecera.setNota1(25);
                         cabecera.setNota2(26);
                         cabecera.setNota3(27);                     
                         cabecera.setMensual(9);
                        break;
                    case 21:
                            cabecera.setNota1(1);
                            cabecera.setNota2(2);                                             
                            cabecera.setMensual(1);
                            LNotasBimestrales = Promedios.notasBimestre01(codigo);
                            LPromMes1 = Promedios.notasMes01(codigo);
                            LPromMes2 = Promedios.notasMes02(codigo);
                        break;                    
                    case 22:
                            cabecera.setNota1(3);
                            cabecera.setNota2(4);                                             
                            cabecera.setMensual(2);
                            LNotasBimestrales = Promedios.notasBimestre02(codigo);
                            LPromMes1 = Promedios.notasMes03(codigo);
                            LPromMes2 = Promedios.notasMes04(codigo);
                        break;
                    case 23:
                            cabecera.setNota1(5);
                            cabecera.setNota2(6);                                             
                            cabecera.setMensual(3);
                            LNotasBimestrales = Promedios.notasBimestre03(codigo);
                            LPromMes1 = Promedios.notasMes05(codigo);
                            LPromMes2 = Promedios.notasMes06(codigo);
                        break;
                    case 24:
                            cabecera.setNota1(7);
                            cabecera.setNota2(8);                                             
                            cabecera.setMensual(4);
                            LNotasBimestrales = Promedios.notasBimestre04(codigo);
                            LPromMes1 = Promedios.notasMes07(codigo);
                            LPromMes2 = Promedios.notasMes08(codigo);
                        break;
                    case 31:
                        cabecera.setNota1(1);
                        cabecera.setNota2(2); 
                        cabecera.setNota3(3);
                        cabecera.setMensual(1);
                        LNotasTrimestrales = Promedios.notasTrimestre01(codigo);
                        LPromMes1 = Promedios.notasMes01(codigo);
                        LPromMes2 = Promedios.notasMes02(codigo);
                        LPromMes3 = Promedios.notasMes03(codigo);
                        break;
                    case 32:
                        cabecera.setNota1(4);
                        cabecera.setNota2(5); 
                        cabecera.setNota3(6);
                        cabecera.setMensual(2);
                        LNotasTrimestrales = Promedios.notasTrimestre02(codigo);
                        LPromMes1 = Promedios.notasMes04(codigo);
                        LPromMes2 = Promedios.notasMes05(codigo);
                        LPromMes3 = Promedios.notasMes06(codigo);
                        break;
                    case 33:
                        cabecera.setNota1(7);
                        cabecera.setNota2(8); 
                        cabecera.setNota3(9);
                        cabecera.setMensual(3);
                        LNotasTrimestrales = Promedios.notasTrimestre03(codigo);
                        LPromMes1 = Promedios.notasMes07(codigo);
                        LPromMes2 = Promedios.notasMes08(codigo);
                        LPromMes3 = Promedios.notasMes09(codigo);
                        break;

                }
                ArrayList<Promedios> NuevaListaProm = new ArrayList<Promedios>();
                 Utilidades oUtil = Utilidades.GradoSeccionAlumno(codigo);
                 ArrayList<Horarios> LCursos = new ArrayList<Horarios>();
                  LCursos = Horarios.listaCursosAlumnoSegunHorario(codigo);
                 int pesoM = Promedios.PesoMes(oUtil.getCodNivel());              
                 int pesoPM = Promedios.PesoPromedioMes(oUtil.getCodNivel());                
                 int pesoB = Promedios.PesoBimTrimestral(oUtil.getCodNivel()); 

                if(periodo>0 && periodo<10){
                    next = "/dinamica/alumno/Notas/ajaxNotasMensuales.jsp";
                    ArrayList<Promedios> NuevaLista = new ArrayList<Promedios>();
                    NuevaLista = Promedios.OrdenarNotas(LNotas, LCursos);         
                    NuevaListaProm = Promedios.calculaPromedio(NuevaLista, 3, pesoM); 
                }
                if(periodo>20 && periodo < 25){
                    
                    next = "/dinamica/alumno/Notas/ajaxNotasBimestrales.jsp";
                    System.out.println(next);
                    ArrayList<Promedios> LPromMesOrd1 = new ArrayList<Promedios>();
                    ArrayList<Promedios> LPromMesOrd2 = new ArrayList<Promedios>();               
                    LPromMesOrd1 = Promedios.OrdenarNotas(LPromMes1, LCursos);
                    LPromMesOrd2 = Promedios.OrdenarNotas(LPromMes2, LCursos);
                    ArrayList<Promedios> LPromMesOrdShow1 = new ArrayList<Promedios>();
                    ArrayList<Promedios> LPromMesOrdShow2 = new ArrayList<Promedios>();
                    LPromMesOrdShow1 = Promedios.calculaPromedio(LPromMesOrd1, 3, pesoM);
                    LPromMesOrdShow2 = Promedios.calculaPromedio(LPromMesOrd2, 3, pesoM);
                    ArrayList<Promedios> LPromBimestral = new ArrayList<Promedios>();
                    Promedios notas = null;
                    for(Horarios o: LCursos){
                        notas = new Promedios();
                        notas.setCurso(o.getNombreCurso());
                        for(Promedios P1: LPromMesOrdShow1){
                            if(P1.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                                notas.setMes1(P1.getPromedioMes());
                            }
                        }
                        for(Promedios P2: LPromMesOrdShow2){
                            if(P2.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                                notas.setMes2(P2.getPromedioMes());
                            }
                        }
                        for(Promedios NB: LNotasBimestrales){
                            if(NB.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                                notas.setNotaBimestral(NB.getNotaBimestral());
                            }
                        }
                    LPromBimestral.add(notas);
                    }
                    NuevaListaProm = new Promedios().calculaPromBimestral(LPromBimestral, 1, pesoB);
                }
                if(periodo>30 && periodo < 34){
//                    next = "/dinamica/alumno/include_consulta/result_notas_trimestre.jsp";
//                    Vector<Promedios> LPromMesOrd1 = new Vector<Promedios>();
//                    Vector<Promedios> LPromMesOrd2 = new Vector<Promedios>();
//                    Vector<Promedios> LPromMesOrd3 = new Vector<Promedios>();
//                    LPromMesOrd1 = Promedios.OrdenarNotas(LPromMes1, LCursos);
//                    LPromMesOrd2 = Promedios.OrdenarNotas(LPromMes2, LCursos);
//                    LPromMesOrd3 = Promedios.OrdenarNotas(LPromMes3, LCursos);
//                    Vector<Promedios> LPromMesOrdShow1 = new Vector<Promedios>();
//                    Vector<Promedios> LPromMesOrdShow2 = new Vector<Promedios>();
//                    Vector<Promedios> LPromMesOrdShow3 = new Vector<Promedios>();
//                    LPromMesOrdShow1 = Promedios.calculaPromedio(LPromMesOrd1, 3, pesoM);
//                    LPromMesOrdShow2 = Promedios.calculaPromedio(LPromMesOrd2, 3, pesoM);
//                    LPromMesOrdShow3 = Promedios.calculaPromedio(LPromMesOrd3, 3, pesoM);
//                    Vector<Promedios> LPromTrimestral = new Vector<Promedios>();
//                    Promedios notas = null;
//                    for(Horarios o: LCursos){
//                        notas = new Promedios();
//                        notas.setCurso(o.getNombreCurso());
//                        for(Promedios P1: LPromMesOrdShow1){
//                            if(P1.getCurso().equalsIgnoreCase(o.getNombreCurso())){
//                                notas.setMes1(P1.getPromedioMes());
//                            }
//                        }
//                        for(Promedios P2: LPromMesOrdShow2){
//                            if(P2.getCurso().equalsIgnoreCase(o.getNombreCurso())){
//                                notas.setMes2(P2.getPromedioMes());
//                            }
//                        }
//                        for(Promedios P3: LPromMesOrdShow3){
//                            if(P3.getCurso().equalsIgnoreCase(o.getNombreCurso())){
//                                notas.setMes3(P3.getPromedioMes());
//                            }
//                        }
//                        for(Promedios NB: LNotasTrimestrales){
//                            if(NB.getCurso().equalsIgnoreCase(o.getNombreCurso())){
//                                notas.setNotaTrimestral(NB.getNotaTrimestral());
//                            }
//                        }
//                        LPromTrimestral.add(notas);
//                    }
//                    NuevaListaProm = Promedios.calculaPromTrimestral(LPromTrimestral, pesoPM, pesoB);
                }

           
                request.setAttribute("notas", NuevaListaProm);
                request.setAttribute("cabecera", cabecera);
                
                this.getServletContext().getRequestDispatcher(next).forward(request,response);
            }else
            {
                out.print("Error-Inténtelo de nuevo");
            }
            
        } finally {
            out.close();
        }
    }
       protected void aulas(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");      
        PrintWriter out = response.getWriter();
        try{
           // HttpSession session = request.getSession(true);
            ArrayList<Docente> LAulas = new ArrayList<Docente>();
            LAulas = Docente.gradosSeccionNivel();
            request.setAttribute("aulas", LAulas);             
             this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Notas/Notas.jsp").forward(request, response);           
        }
        finally{
            out.close();
        }
  }


      protected void HorarioGeneral(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        //HttpSession session = request.getSession(true);
        try {
           //  int codPersona = Integer.parseInt(session.getAttribute("codPersona").toString());          
             ArrayList<Docente> LAulas = new ArrayList<Docente>();
             LAulas = Docente.gradosSeccionNivel();
           
             if(request.getParameter("cboAula")==null){
                  //Utilidades oUtilidades = new Utilidades();
               //   oUtilidades = Utilidades.nivelGradoAlumno(codGrado, codNivel);
                  //System.out.print(oUtilidades);
                  //request.setAttribute("docente", oUtilidades);
                 
                  UsuarioWeb oUsuario = new UsuarioWeb();
                  oUsuario = UsuarioWeb.datosUsuarioWeb(1057);
                 // oDocente = Docente.NombreDocentesAnioPorCodigo(277);
                  request.setAttribute("usuario", oUsuario);
                  request.setAttribute("lista", LAulas);
                  this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Horario/HorarioGeneral.jsp").forward(request, response);
             }
             else {
                 if(request.getParameter("cboAula")!=null)
                  {
                String cods = request.getParameter("cboAula");
                //int codPersonaDocente = Integer.parseInt(session.getAttribute("codPersona").toString());      
                String datos[] = cods.split(",");
                int codGrado = Integer.parseInt(datos[0]);
                int codSeccion = Integer.parseInt(datos[1]);
                int codNivel = Integer.parseInt(datos[2]);
             // int codProfesor =Integer.parseInt(request.getParameter("cboDocente"));
                ArrayList<Alumno> LAlumno = new ArrayList<Alumno> ();
                LAlumno = Alumno.listaAlumnosSegunAula(codGrado, codSeccion, codNivel);
                  for (int i = 0; i < LAlumno.size(); i++) {
                         // System.out.println("Codigo Alumno: " +LAlumno.get(0).getCodigo());
                    }
              ArrayList<Horarios> LHorarios = new ArrayList<Horarios> ();
             // int codAlumno = Integer.parseInt(request.getParameter("cboAula"));
              LHorarios = new Horarios().HorarioAlumnoPorCodigoPersona(LAlumno.get(0).getCodigo(), codNivel);
                     // System.out.println("Horario:" +LHorarios);
                   //   System.out.println("Hroa" +LHorarios.size());
              System.out.println("COLECCION:  "+new Gson().toJson(LHorarios));
              response.getWriter().write(new Gson().toJson(LHorarios));
                }
             }
        } finally {
            out.close();
        }
    }
      protected void listarComunicado(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        try {
          /*   String[] codigos = request.getParameter("codigos").split(",");
            for (int i = 0; i < codigos.length; i++) {
                ProyectosComunicados.eliminarComunicado(Integer.parseInt(codigos[i]));
            }*/
            HttpSession session = request.getSession(true);
          /*  int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
            ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
            LComunicados = ProyectosComunicados.ListaComunicadosPorProfesor(cod);
            StringBuilder sb = new StringBuilder();
            for(ProyectosComunicados actual:LComunicados){
                sb.append("[\"" 
                        + "<input type='checkbox' class='file' value='" 
                        + actual.getCodComunicado() + "'/>" 
                        + "\",\"" + actual.getNombre() 
                        + "\",\"" + actual.getFecha() 
                        + "\",\"" + actual.getGrado()+ "'" + actual.getSeccion() + "'" 
                        + "\",\"" + actual.getNivel() 
                        + "\",\"" + actual.getTipo() 
                        + "\",\"" + (actual.getEstado().equals("P")?"Pendiente":actual.getEstado().equals("A")?"Aprobado":"Denegado") 
                        + "\",\"<a href='javascript:showDialog("+ actual.getCodComunicado() + ");' class='edit_icon' title='Editar'></a>\"],");
            }
            String str = "";
            System.out.println(sb.toString());
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            out.println(str);*/
            ArrayList<ProyectosComunicados> lpc;
            String tipo=request.getParameter("tipo");
            if(tipo.equalsIgnoreCase("A"))
            {
               lpc = new ProyectosComunicados().listaComunicadosAprobado();
            }
            else
            {
                if(tipo.equalsIgnoreCase("D"))
                {
                    lpc= new ProyectosComunicados().listaComunicadosDenegado();
                }
                else
                {
                    //Si es Pendiente
                    lpc = new ProyectosComunicados().listaComunicadosPendiente();
                }
            }
            
            String str=retornarComunicadosPorEstado(lpc);
            
             out.println(str);
            
            
            
            
        } finally {
            out.close();
        }
    }  
    
      private String retornarComunicadosPorEstado(ArrayList<ProyectosComunicados> lpc)
      {
            StringBuilder sb = new StringBuilder();
            for(ProyectosComunicados actual:lpc){
                sb.append("[\"" + actual.getPersona() 
                        + "\",\"" + actual.getNombre()
                        + "\",\"" + actual.getFecha()
                        + "\",\"" + actual.getGrado() 
                        + "\",\"" + actual.getTipo() 
                        + "\",\"" + (actual.getEstado().equals("P")?"Pendiente":actual.getEstado().equals("A")?"Aprobado":"Denegado") 
                        + "\",\"<a href='javascript:showDialog("+ actual.getCodComunicado() + ");' class='edit_icon' title='Editar'></a>\"],");
            }
            String str = "";
        
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
           
            return str;
      }
     
    protected void eliminarComunicado(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        try {
             String[] codigos = request.getParameter("codigos").split(",");
            for (int i = 0; i < codigos.length; i++) {
                ProyectosComunicados.eliminarComunicado(Integer.parseInt(codigos[i]));
            }
            HttpSession session = request.getSession(true);
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
            ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
            LComunicados = ProyectosComunicados.ListaComunicadosPorProfesor(cod);
            StringBuilder sb = new StringBuilder();
            for(ProyectosComunicados actual:LComunicados){
                sb.append("[\"" 
                        + "<input type='checkbox' class='file' value='" 
                        + actual.getCodComunicado() + "'/>" 
                        + "\",\"" + actual.getNombre() 
                        + "\",\"" + actual.getFecha() 
                        + "\",\"" + actual.getGrado()+ "'" + actual.getSeccion() + "'" 
                        + "\",\"" + actual.getNivel() 
                        + "\",\"" + actual.getTipo() 
                        + "\",\"" + (actual.getEstado().equals("P")?"Pendiente":actual.getEstado().equals("A")?"Aprobado":"Denegado") 
                        + "\",\"<a href='javascript:showDialog("+ actual.getCodComunicado() + ");' class='edit_icon' title='Editar'></a>\"],");
            }
            String str = "";
            System.out.println(sb.toString());
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            out.println(str);
        } finally {
            out.close();
        }
    }
     private String tipoActividad(int tipo)
 {
     String rpta="";
     switch(tipo)
     {
         case 1:rpta="Reunion"; break;
         case 2:rpta="Actividad"; break;
         case 3:rpta="Calendario";break;
         case 4:rpta="Anuncio";  
     }
     
     return rpta;
 }
        private int tipoComunicado(String accion)
 {
     if(accion.equalsIgnoreCase("comuActividad"))
     {
         return 2;
     }
     else
     {
         if(accion.equalsIgnoreCase("comuAnuncio"))
         {
             return 4;
         }
         else
         {
             if(accion.equalsIgnoreCase("comuReunion"))
             {
                 return 1;
             }
             else
             {
                 //Si es comunCalendario
                     return 3;
                 
             }
         }
     }
 }
    
        protected void comunicadoActividad(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
      
        PrintWriter out = response.getWriter();
        try 
        {
            HttpSession session = request.getSession(true);
             int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
//             Utilidades oUtilidades = new Utilidades();
//             oUtilidades = Utilidades.GradoSeccionAlumno(cod);
             Utilidades oUtilidad = Utilidades.GradoSeccionAlumno(cod);
             int codGradoNivel = 0;
             codGradoNivel = Utilidades.nivelGradoAlumno(oUtilidad.getCodGrado(), oUtilidad.getCodNivel());
 ArrayList<ProyectosComunicados> LReuniones = new ArrayList<ProyectosComunicados>();
 int tipoActividad=tipoComunicado(request.getParameter("accion"));
 LReuniones = ProyectosComunicados.ListaCabeceraComunicadoPorNivelGradoSeccionTipo(codGradoNivel, oUtilidad.getCodSeccion(),tipoActividad);
 
             
             request.setAttribute("actividad", LReuniones);
             
             this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Comunicados/Comunicado"+tipoActividad(tipoActividad)+".jsp").forward(request, response);
           
        }
        finally 
        {
            out.close();
        }
  }
  protected void RegistroComunicadosInv(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();        
        try {    HttpSession session = request.getSession(true);
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
           /// int codPersona = Integer.parseInt(request.getParameter("codPersona"));
//            String cods [] = codigos.split(",");
//            int codGrado = Integer.parseInt(cods[0]);
//            int codSeccion = Integer.parseInt(cods[1]);
//            int codNivel = Integer.parseInt(cods[2]);
           
//            codGradoNivel = Utilidades.nivelGradoAlumno(codGrado,codNivel);
           ProyectosComunicados oComunicado = new ProyectosComunicados();
           if(!request.getParameter("codComunicado").equals(""))
           {
            oComunicado.setCodComunicado(Integer.parseInt(request.getParameter("codComunicado")));
            
            String titulo = request.getParameter("titulo");
            String fecha = request.getParameter("fecha");
            String horaInicio = request.getParameter("horaInicio");
            String horaFin = request.getParameter("horaFin");
            String lugar = request.getParameter("lugar");
            String descripcion = request.getParameter("descripcion");
            int codSeccion = Integer.parseInt(request.getParameter("cboAula").split(",")[1]);
            int codNivelGrado = Utilidades.nivelGradoAlumno(Integer.parseInt(request.getParameter("cboAula").split(",")[0]),Integer.parseInt(request.getParameter("cboAula").split(",")[2]));
            int codTipo = Integer.parseInt(request.getParameter("cboTipo"));
            
            oComunicado.setNombre(titulo);
            oComunicado.setFecha(fecha);
            oComunicado.setHoraInicio(horaInicio);
            oComunicado.setHoraFin(horaFin);
            oComunicado.setDescripcion(descripcion);
            oComunicado.setLugar(lugar);
            oComunicado.setCodNivelGrado(codNivelGrado);          
            oComunicado.setCodAula(codSeccion);
            oComunicado.setCodTipo(codTipo);
            oComunicado.setCodPersona(cod);
            
           
         
            
            ProyectosComunicados.actualizarComunicado(oComunicado);
           }
           else
           {
              
            String titulo = request.getParameter("titulo");
            String fecha = request.getParameter("fecha");
            String horaInicio = request.getParameter("horaInicio");
            String horaFin = request.getParameter("horaFin");
            String lugar = request.getParameter("lugar");
            String descripcion = request.getParameter("descripcion");
            
            //String codigos = request.getParameter("cboAula"); 
               System.out.println("Split 1: "+request.getParameter("cboAula").split(",")[1]);
            int codSeccion = Integer.parseInt(request.getParameter("cboAula").split(",")[1]);
            int codNivelGrado = Utilidades.nivelGradoAlumno(Integer.parseInt(request.getParameter("cboAula").split(",")[0]),Integer.parseInt(request.getParameter("cboAula").split(",")[2]));
            int codTipo = Integer.parseInt(request.getParameter("cboTipo"));
            oComunicado.setNombre(titulo);
            oComunicado.setFecha(fecha);
            oComunicado.setHoraInicio(horaInicio);
            oComunicado.setHoraFin(horaFin);
            oComunicado.setDescripcion(descripcion);
            oComunicado.setLugar(lugar);
            oComunicado.setCodNivelGrado(codNivelGrado);          
            oComunicado.setCodAula(codSeccion);
            oComunicado.setCodTipo(codTipo);
            oComunicado.setCodPersona(cod);
               System.out.println("Comunicado Registro: "+oComunicado);
             boolean resp=ProyectosComunicados.registroComunicado(oComunicado);
                System.out.println("Respuesta de la Transaccion"+resp);
           }
        //    oComunicado.setCodPersona(codPersona);
//            if(oComunicado.getCodComunicado()>0)
//            {
//                ProyectosComunicados.actualizarComunicado(oComunicado);
//            }else{
//                boolean resp=ProyectosComunicados.registroComunicado(oComunicado);
//            String titulo = request.getParameter("titulo");
//            String fecha = request.getParameter("fecha");
//            String horaInicio = request.getParameter("horaInicio");
//            String horaFin = request.getParameter("horaFin");
//            String lugar = request.getParameter("lugar");
//            String descripcion = request.getParameter("descripcion");
//            //String codigos = request.getParameter("cboAula");       
//            int codSeccion = Integer.parseInt(request.getParameter("cboAula").split(",")[1]);
//            int codTipo = Integer.parseInt(request.getParameter("cboTipo"));
//                System.out.println("Respuesta de la Transaccion"+resp);
//            }
  
        
           
            ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
            LComunicados = ProyectosComunicados.ListaComunicadosPorProfesor(cod);
            StringBuilder sb = new StringBuilder();
            for(ProyectosComunicados actual:LComunicados){
                sb.append("[\"" 
                        + "<input type='checkbox' class='file' value='" 
                        + actual.getCodComunicado() + "'/>" 
                        + "\",\"" + actual.getNombre() 
                        + "\",\"" + actual.getFecha() 
                        + "\",\"" + actual.getGrado()+ "'" + actual.getSeccion() + "'" 
                        + "\",\"" + actual.getNivel() 
                        + "\",\"" + actual.getTipo() 
                        + "\",\"" + (actual.getEstado().equals("P")?"Pendiente":actual.getEstado().equals("A")?"Aprobado":"Denegado") 
                        + "\",\"<a href='javascript:showDialog("+ actual.getCodComunicado() + ");' class='edit_icon' title='Editar'></a>\"],");
            }
            String str = "";
            System.out.println(sb.toString());
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            out.println(str);
        } finally {
            out.close();
        }
    }  
    
    
  protected void registroComunicadoForm(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        try {
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
            
       //     ArrayList<Docente> LAulas = new ArrayList<Docente>();
         //   LAulas = Docente.GradoSeccionNivelDocenteSegunHorario(cod);
         //   Utilidades oUtilidad = Utilidades.GradoSeccionAlumno(cod);
             //int codGradoNivel = 0;
             //codGradoNivel = Utilidades.nivelGradoAlumno(oUtilidad.getCodGrado(), oUtilidad.getCodNivel());
            
           // int codNivelGrado = Utilidades.nivelGradoAlumno(LAulas.get(0).getCodGrado(), LAulas.get(0).getCodNivel());
               ArrayList<Docente> LDocentes = new ArrayList<Docente>();//Todas las aulas reportadas
            LDocentes = Docente.gradosSeccionNivel();
            
            ArrayList<ProyectosComunicados> LTipos = new ArrayList<ProyectosComunicados>();
            LTipos = ProyectosComunicados.ListaTipoComunicados();
            //LTipos = ProyectosComunicados.ListaCabeceraComunicadoPorNivelGradoSeccionTipo(codNivelGrado, cod, cod);
            request.setAttribute("tipos", LTipos);
            request.setAttribute("aulas", LDocentes);
            
            this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Comunicados/ComunicadosForm.jsp").forward(request, response);
        } finally {
            out.close();
        }
    }   
protected void comunicadosSecretaria(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        try {
            HttpSession session = request.getSession(true);
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
            ArrayList<ProyectosComunicados> LComunicados = new ArrayList<ProyectosComunicados>();
            LComunicados = ProyectosComunicados.ListaComunicadosPorProfesor(cod);
            StringBuilder sb = new StringBuilder();
            for(ProyectosComunicados actual:LComunicados){
                sb.append("[\"" 
                        + "<input type='checkbox' class='file' value='" 
                        + actual.getCodComunicado() + "'/>" 
                        + "\",\"" + actual.getNombre() 
                        + "\",\"" + actual.getFecha() 
                        + "\",\"" + actual.getGrado()+ "'" + actual.getSeccion() + "'" 
                        + "\",\"" + actual.getNivel() 
                        + "\",\"" + actual.getTipo() 
                        + "\",\"" + (actual.getEstado().equals("P")?"Pendiente":actual.getEstado().equals("A")?"Aprobado":"Denegado")
                        + "\",\"<a href='javascript:showDialog("+ actual.getCodComunicado() + ");' class='edit_icon' title='Editar'></a>\"],");
            }
            
            String str = "";
            System.out.println(sb.toString());
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            
            request.setAttribute("comunicados", str);

            this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Comunicados/MantenimientoComun.jsp").forward(request,response);
        } finally {
            out.close();
        }
    }

 protected void detalleComunicadoV(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        try {
            int codComunicado = Integer.parseInt(request.getParameter("codComunicado"));
            ProyectosComunicados oComunicado = new ProyectosComunicados();
            oComunicado = ProyectosComunicados.modificarComunicado(codComunicado);
           
       //     int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
            ArrayList<Docente> LDocentes = new ArrayList<Docente>();
            LDocentes = Docente.gradosSeccionNivel();//Todas las aulas reportadas
            
            ArrayList<ProyectosComunicados> LTipos = new ArrayList<ProyectosComunicados>();
            LTipos = ProyectosComunicados.ListaTipoComunicados();

            request.setAttribute("aulas", LDocentes);
            request.setAttribute("tipos", LTipos);
            request.setAttribute("comunicado", oComunicado);

            this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Comunicados/ComunicadosFormV.jsp").forward(request, response);
        } finally {
            
            out.close();
        }
    }


   protected void detalleComunicado(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        try {
            int codComunicado = Integer.parseInt(request.getParameter("codComunicado"));
            ProyectosComunicados oComunicado = new ProyectosComunicados();
            oComunicado = ProyectosComunicados.modificarComunicado(codComunicado);
           
       //     int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
            ArrayList<Docente> LDocentes = new ArrayList<Docente>();
            LDocentes = Docente.gradosSeccionNivel();//Todas las aulas reportadas
            
            ArrayList<ProyectosComunicados> LTipos = new ArrayList<ProyectosComunicados>();
            LTipos = ProyectosComunicados.ListaTipoComunicados();

            request.setAttribute("aulas", LDocentes);
            request.setAttribute("tipos", LTipos);
            request.setAttribute("comunicado", oComunicado);
 
            this.getServletContext().getRequestDispatcher("/dinamica/secretaria/Comunicados/ComunicadosForm.jsp").forward(request, response);
        } finally {
            
            out.close();
        }
    }

   protected void modificaComunicado(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {           
            request.setAttribute("mensaje", new ProyectosComunicados().modiicaComunicado(Integer.parseInt(request.getParameter("codComunicado")), request.getParameter("cboAccion"))?"Comunicado Modificado Con Exito":"Comunicado No Modificado");
            String destino = request.getParameter("cboAccion").equals("P")?"listaComunicadosPendiente.jsp":request.getParameter("cboAccion").equals("A")?"listaComunicadosAprobados.jsp":"listaComunicadosDenegados.jsp";
            this.getServletContext().getRequestDispatcher("/dinamica/secretaria/include_consulta/" + destino).forward(request, response);
        } finally {
            out.close();
        }
    }

    protected void RegistroComunicados(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String cods [] = request.getParameter("cboAula").split(",");
            int codGradoNivel = Utilidades.nivelGradoAlumno(Integer.parseInt(cods[0]),Integer.parseInt(cods[2]));
            ProyectosComunicados oComunicado = new ProyectosComunicados();
            oComunicado.setNombre(request.getParameter("txtTitulo"));
            oComunicado.setFecha(request.getParameter("txtFecha"));
            oComunicado.setHoraInicio(request.getParameter("txtHoraInicio"));
            oComunicado.setHoraFin(request.getParameter("txtHoraFin"));
            oComunicado.setDescripcion(request.getParameter("txtDescripcion"));
            oComunicado.setLugar(request.getParameter("txtLugar"));
            oComunicado.setCodPersona(Integer.parseInt(request.getParameter("codPersona")));
            oComunicado.setCodNivelGrado(codGradoNivel);
            oComunicado.setCodTipo(Integer.parseInt(request.getParameter("cboTipo")));
            oComunicado.setCodAula(Integer.parseInt(cods[1]));
            request.setAttribute("mensaje", ProyectosComunicados.registroComunicadoSec(oComunicado)?"Comunicado Registrado Con Exito":"Comunicado No Registrado");
            this.getServletContext().getRequestDispatcher("/dinamica/secretaria/include_consulta/ComunicadosReg.jsp").forward(request, response);

        } finally {
            out.close();
        }
    }
    
 protected void verificarComunicado(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();        
        try {    HttpSession session = request.getSession(true);
       
           int c= Integer.parseInt(request.getParameter("codComunicado"));
           String estado=request.getParameter("cboEstado");

            ProyectosComunicados.verificarComunicado(estado,c);
           ArrayList<ProyectosComunicados> lpc;
            String tipo=request.getParameter("estado");
            if(tipo.equalsIgnoreCase("A"))
            {
               lpc = new ProyectosComunicados().listaComunicadosAprobado();
            }
            else
            {
                if(tipo.equalsIgnoreCase("D"))
                {
                    lpc= new ProyectosComunicados().listaComunicadosDenegado();
                }
                else
                {
                    //Si es Pendiente
                    lpc = new ProyectosComunicados().listaComunicadosPendiente();
                }
            }
            
          
            
             out.println(retornarComunicadosPorEstado(lpc));
          

        } finally {
            out.close();
        }
    }     
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
